指令 | 參數 | 返回 | 說明 |
---|---|---|---|
i32.wrap/i64 | (參數1) | 轉換結果 | 將64位元整數轉換成32位元整數 |
i32.trunc_s/f32 | (參數1) | 轉換結果 | 將32位元浮點數轉換成32位元整數(有號) |
i32.trunc_s/f64 | (參數1) | 轉換結果 | 將64位元浮點數轉換成32位元整數(有號) |
i32.trunc_u/f32 | (參數1) | 轉換結果 | 將32位元浮點數轉換成32位元整數(無號) |
i32.trunc_u/f64 | (參數1) | 轉換結果 | 將64位元浮點數轉換成32位元整數(無號) |
i32.reinterpret/f32 | (參數1) | 轉換結果 | 將32位元浮點數裡面的位元,直接當作32位元整數裡的位元 |
指令 | 參數 | 返回 | 說明 |
---|---|---|---|
i64.extend_s/i32 | (參數1) | 轉換結果 | 將32位元整數擴充成64位元整數(有號) |
i64.extend_u/i32 | (參數1) | 轉換結果 | 將32位元整數擴充成64位元整數(無號) |
i64.trunc_s/f32 | (參數1) | 轉換結果 | 將32位元浮點數轉換成64位元整數(有號) |
i64.trunc_s/f64 | (參數1) | 轉換結果 | 將64位元浮點轉換成64位元整數(有號) |
i64.trunc_u/f32 | (參數1) | 轉換結果 | 將32位元浮點轉換成64位元整數(無號) |
i64.trunc_u/f64 | (參數1) | 轉換結果 | 將64位元浮點轉換成64位元整數(無號) |
i64.reinterpret/f64 | (參數1) | 轉換結果 | 將64位元浮點數裡面的位元,直接當作64位元整數裡的位元 |
指令 | 參數 | 返回 | 說明 |
---|---|---|---|
f32.demote/f64 | (參數1) | 轉換結果 | 將64位元浮點數轉換成32位元浮點數 |
f32.convert_s/i32 | (參數1) | 轉換結果 | 將32位元整數轉換成32位元浮點數(有號) |
f32.convert_s/i64 | (參數1) | 轉換結果 | 將64位元整數轉換成32位元浮點數(有號) |
f32.convert_u/i32 | (參數1) | 轉換結果 | 將32位元整數轉換成32位元浮點數(無號) |
f32.convert_u/i64 | (參數1) | 轉換結果 | 將64位元整數轉換成32位元浮點數(無號) |
f32.reinterpret/i32 | (參數1) | 轉換結果 | 將32位元整數裡面的位元,直接當作32位元浮點數裡的位元 |
指令 | 參數 | 返回 | 說明 |
---|---|---|---|
f64.promote/f32 | (參數1) | 轉換結果 | 將32位元浮點數轉換成64位元浮點數 |
f64.convert_s/i32 | (參數1) | 轉換結果 | 將32位元整數轉換成64位元浮點數(有號) |
f64.convert_s/i64 | (參數1) | 轉換結果 | 將64位元整數轉換成64位元浮點數(有號) |
f64.convert_u/i32 | (參數1) | 轉換結果 | 將32位元整數轉換成64位元浮點數(無號) |
f64.convert_u/i64 | (參數1) | 轉換結果 | 將64位元整數轉換成64位元浮點數(無號) |
f64.reinterpret/i64 | (參數1) | 轉換結果 | 將64位元整數裡面的位元,直接當作64位元浮點數裡的位元 |
指令 | 參數 | 返回 | 說明 |
---|---|---|---|
drop | (參數1) | 無 | 把參數從堆疊中丟棄 |
select | (參數1) (參數2) (參數3) | 結果 | 如果參數3為不是0,則返回參數1,否則返回參數2(參數1與參數2必須同型別,參數3是i32) |
unreachable | 無 | 無 | 直接觸發trap(錯誤或例外,程式停止執行) |
nop | 無 | 無 | 無動作,但是會稍微使用一點運算時間 |
大致上就把WebAssembly目前使用到的指令整理完了。明天來介紹一下目前釋出的版本(MVP,Most Viable Product)的一些特性,以及未來可能加入的一些功能。
之後除了看看在node.js環境中執行WebAssembly的狀況,大概就都是一些應用,以及使用Emscripten來把其他語言的應用轉到WebAssembly。